home *** CD-ROM | disk | FTP | other *** search
/ Aminet 45 / Aminet 45 (2001)(GTI - Schatztruhe)[!][Oct 2001].iso / Aminet / dev / e / yaec.lha / examples / uptime.e < prev    next >
Text File  |  2001-08-12  |  2KB  |  54 lines

  1. -> uptime.e
  2.  
  3.  
  4. MODULE 'dos/dos', 'dos/dosextens',
  5.         'utility/date', 'utility'
  6.  
  7. ENUM ERR_NONE, ERR_INFO, ERR_LIB, ERR_LOCK
  8.  
  9. RAISE ERR_INFO IF Info()<>TRUE,
  10.       ERR_LIB  IF OpenLibrary()=NIL,
  11.       ERR_LOCK IF Lock()=NIL
  12.  
  13.  
  14. PROC main() HANDLE
  15.   DEF infodata=NIL:PTR TO infodata, ramdevice:PTR TO devlist
  16.   DEF now=NIL:PTR TO datestamp, currenttime:LONG, boottime:LONG
  17.   DEF lock=NIL, d:LONG, h:LONG, m:LONG
  18.   utilitybase:=OpenLibrary('utility.library', 37)
  19.   NEW infodata
  20.   NEW now
  21.   lock:=Lock('RAM:', SHARED_LOCK)
  22.   Info(lock, infodata)
  23.   -> E-Note: convert BCPL pointer
  24.   ramdevice:=BADDR(infodata.volumenode)
  25.   -> yaec-note : operators are 32bit! we can use * instead of Mul()
  26.   boottime:=(ramdevice.volumedate.days * 86400) +
  27.             (ramdevice.volumedate.minute * 60) +
  28.             Mod(ramdevice.volumedate.tick, TICKS_PER_SECOND)
  29.   DateStamp(now)
  30.   currenttime:=(now.days * 86400) +
  31.                (now.minute * 60) +
  32.                Mod(now.tick, TICKS_PER_SECOND)
  33.   currenttime:=currenttime-boottime
  34.   IF currenttime > 0
  35.     -> E-Note: a multiple assignment gets the two UdivMod32() results
  36.     d, h :=UDivMod32(currenttime, 86400)
  37.     h, m :=UDivMod32(h, 3600)
  38.     m:=UDivMod32(m, 60)
  39.     WriteF('Up for \d days, \d hours, \d minutes\n', d, h, m)
  40.   ENDIF
  41. EXCEPT DO
  42.   IF lock THEN UnLock(lock)
  43.   END now
  44.   END infodata
  45.   IF utilitybase THEN CloseLibrary(utilitybase)
  46.   SELECT exception
  47.   CASE ERR_INFO;  WriteF('Error: could not get info on lock\n')
  48.   CASE ERR_LIB;   WriteF('Error: could not open utility library\n')
  49.   CASE ERR_LOCK;  WriteF('Error: could not lock RAM:\n')
  50.   CASE "MEM";     WriteF('Error: ran out of memory\n')
  51.   ENDSELECT
  52. ENDPROC
  53.  
  54.